﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using WCFAccesos.Dominio;


namespace WCFAccesos.Persistencia
{
    public class GRPerfilDAO
    {

        public GRPerfil Obtener(int codigo)
        {
            SqlDataReader resultado = null;
            SqlConnection con = null;
            SqlCommand com = null;
            GRPerfil perfilEncontrado = null;
            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                com = new SqlCommand("GRPerfil_Obtener", con);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.Add("@iCodPerfil", SqlDbType.Int).Value = codigo;
                resultado = com.ExecuteReader();
                if (resultado.HasRows)
                {
                    while (resultado.Read())
                    {
                        perfilEncontrado = new GRPerfil();
                        perfilEncontrado.iCodPerfil = Convert.ToInt32(resultado["iCodPerfil"]);
                        perfilEncontrado.vNomPerfil = (string)resultado["vNomPerfil"];
                        perfilEncontrado.bActivoPerfil = Convert.ToBoolean(resultado["bActivoPerfil"].ToString());
                        perfilEncontrado.iCodUsu = Convert.ToInt32(resultado["iCodUsu"].ToString());
                        perfilEncontrado.vNomTer = (string)resultado["vNomTer"];
                        perfilEncontrado.dtFecAct = Convert.ToDateTime(resultado["dtFecAct"].ToString());
                    }
                }
            }
            catch
            {
                perfilEncontrado = null;
            }
            finally
            {
                if (resultado != null)
                    resultado.Close();
                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return perfilEncontrado;
        }

        public List<GRPerfil> Listar()
        {

            List<GRPerfil> opciones = null;
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand("GRPerfil_Listar", con))
                {
                    com.CommandType = CommandType.StoredProcedure;
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            opciones.Add(CargarOpcion(resultado));
                        }
                    }
                }
            }
            return opciones;
        }

        private GRPerfil CargarOpcion(IDataReader resultado)
        {
            GRPerfil opcion = new GRPerfil()
            {
                iCodPerfil = Convert.ToInt32(resultado["iCodPerfil"].ToString()),
                vNomPerfil = (string)resultado["vNomPerfil"],
                bActivoPerfil = Convert.ToBoolean(resultado["bActivoPerfil"].ToString()),
                iCodUsu = Convert.ToInt32(resultado["iCodUsu"].ToString()),
                vNomTer = (string)resultado["vNomTer"],
                dtFecAct = Convert.ToDateTime(resultado["dtFecAct"].ToString())
            };
            return opcion;
        }



    }
}